package com.qianfeng.myymatou.view;

import android.content.Context;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.qianfeng.myymatou.R;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/7/21.
 * <p>
 * “首页”中“全球必买清单”的单项
 * 在ForeignGoodsView的基础上做了改动
 */
public class MustBuyView extends LinearLayout {

    private Context mContext;
    private static final int PRODUCT_COUNT = 10;//默认展示10张商品小图

    //TODO MustBuyView-->更改泛型为对应“全球必买清单”的Bean对象
    private List<Object> mMustBuyProductList;

    private LinearLayout mLlProductsContainer;
    private TextView mTvTheme, mTvSingleProductCurrentPrice;
    private ImageView mIvSingleProductImg;

    public MustBuyView(Context context) {
        this(context, null);
    }

    public MustBuyView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MustBuyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        //初始化控件
        initView(context);
    }

    /**
     * 初始化控件
     *
     * @param context 上下文
     */
    private void initView(Context context) {
        mContext = context;
        mMustBuyProductList = new ArrayList<>();

        //从布局生成View对象
        LayoutInflater.from(context).inflate(R.layout.view_foreign_goods, this);
        //存放Products的线性容器
        mLlProductsContainer = (LinearLayout) findViewById(R.id.ll_products_container);
        ImageView ivGoodsTheme = (ImageView) findViewById(R.id.iv_goods_theme);
        ivGoodsTheme.setVisibility(GONE);//去掉“洋货团”中的主题图片

        //添加“全球必买清单”中单项的顶部两个TextView和一条分割线
        //初始化 显示“来自xxx位买手   xxxx件商品”字样 的TextView，并添加到布局最上方
        initTvFrom();
        //初始化 显示主题 的TextView，并添加到布局最上方
        initTvTheme();
        //初始化分割线，宽度和 显示主题 的TextView一样，显示在两个TextView之间
        initDivideLine();
    }

    /**
     * 初始化 显示“来自xxx位买手   xxxx件商品”字样的TextView，并添加到布局最上方
     */
    private void initTvFrom() {
        TextView tvFrom = new TextView(mContext);
        LayoutParams lpTvFrom = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        lpTvFrom.setMargins(0, 10, 0, 6);
        tvFrom.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);//设置字体大小，第一个参数为单位
        tvFrom.setTextColor(getResources().getColor(R.color.marketPriceColor));
        mLlProductsContainer.addView(tvFrom, 0);//加到布局最上面
    }

    /**
     * 初始化 显示主题 的TextView，并添加到布局最上方
     */
    private void initTvTheme() {
        mTvTheme = new TextView(mContext);
        LayoutParams lpTvTheme = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        lpTvTheme.setMargins(0, 10, 0, 6);
        mTvTheme.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);//设置字体大小，第一个参数为单位
        mLlProductsContainer.addView(mTvTheme, 0);//加到布局最上面
    }

    /**
     * 初始化分割线，宽度和 显示主题 的TextView一样，显示在两个TextView之间
     */
    private void initDivideLine() {
        View devideLine = LayoutInflater.from(mContext).inflate(R.layout.layout_tb_divide_line, null);
        LayoutParams lpLine=new LayoutParams(mTvTheme.getWidth(),1);
        devideLine.setLayoutParams(lpLine);
        mLlProductsContainer.addView(devideLine,1);
    }

    /**
     * 设置数据，由外部调用，传入数据源
     */
    //TODO MustBuyView-->更改入参
    public void setMustBuyData(List<Object> list) {
        if (list!=null && list.size()>0){
            for (int i = 0; i < PRODUCT_COUNT; i++) {
                //填充单个Product布局，找控件
                LinearLayout llSingleProductContainer = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.item_single_product, null);
                LinearLayout.LayoutParams lpLl=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                lpLl.setMargins(8,0,8,0);//在布局文件中设置margin值并没有什么卵用，所以在这里设置
                llSingleProductContainer.setLayoutParams(lpLl);

                //找出单个Product的各控件
                findViewInSingle(llSingleProductContainer);

                //设置数据到单个Product视图
                pushDataToView(i);

                //添加单个Product视图到横向滚动条中的横向LinearLayout中
                mLlProductsContainer.addView(llSingleProductContainer);

                //设置单个Product的监听
                //TODO MustBuyView-->缺跳转
                final int finalI = i;
                llSingleProductContainer.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(mContext, "我是第 "+finalI+" 个小图！", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    }

    /**
     * 找出单个Product的各控件
     * @param llSingleProductContainer 承装单个Product的各控件的LinearLayout
     */
    private void findViewInSingle(LinearLayout llSingleProductContainer) {
        mIvSingleProductImg = (ImageView) llSingleProductContainer.findViewById(R.id.iv_singleProductImg);
        mTvSingleProductCurrentPrice = (TextView) llSingleProductContainer.findViewById(R.id.tv_singleProductCurrentPrice);
        TextView tvSingleProductName = (TextView) llSingleProductContainer.findViewById(R.id.tv_singleProductName);
        TextView tvSingleProductMarketPrice = (TextView) llSingleProductContainer.findViewById(R.id.tv_singleProductMarketPrice);
        //不显示商品名称和市场价格，GONE掉
        tvSingleProductName.setVisibility(GONE);
        tvSingleProductMarketPrice.setVisibility(GONE);
    }

    /**
     * 将数据设置进对应的单个Product中的控件
     * @param position 当前位置
     */
    //TODO MustBuyView-->这里需要补充数据
    private void pushDataToView(int position) {
//        setImageByPicasso(, mIvSingleProductImg);
//        mTvSingleProductCurrentPrice.setText(mContext.getString(R.string.yuan)+);
    }

    /**
     * 用Picasso设置图片到ImageView
     *
     * @param url 图片url
     * @param ivProducts 要显示到的ImageView
     */
    private void setImageByPicasso(String url, ImageView ivProducts) {
        Picasso.with(mContext)
                .load(url)
                .noFade()
                .placeholder(R.mipmap.ic_launcher)
                .error(R.mipmap.ic_launcher)
                .resize(80, 80)
                .centerCrop()
                .into(ivProducts);
    }

}
